<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>面向对象封装消息提示</title>
    <style>
      .modal {
        width: 300px;
        min-height: 100px;
        box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
        border-radius: 4px;
        position: fixed;
        z-index: 999;
        left: 50%;
        top: 50%;
        transform: translate3d(-50%, -50%, 0);
        background-color: #fff;
      }

      .modal .header {
        line-height: 40px;
        padding: 0 10px;
        position: relative;
        font-size: 20px;
      }

      .modal .header i {
        font-style: normal;
        color: #999;
        position: absolute;
        right: 15px;
        top: -2px;
        cursor: pointer;
      }

      .modal .body {
        text-align: center;
        padding: 10px;
      }

      .modal .footer {
        display: flex;
        justify-content: flex-end;
        padding: 10px;
      }

      .modal .footer a {
        padding: 3px 8px;
        background: #ccc;
        text-decoration: none;
        color: #fff;
        border-radius: 2px;
        margin-right: 10px;
        font-size: 14px;
      }

      .modal .footer a.submit {
        background-color: #369;
      }
    </style>
  </head>

  <body>
    <button id="delete">删除</button>
    <button id="login">登录</button>

    <!-- <div class="modal">
    <div class="header">温馨提示 <i>x</i></div>
    <div class="body">您没有删除权限操作</div>
  </div> -->

    <script>
      // 1.  模态框的构造函数
      function Modal(title = "", message = "") {
        // 公共的属性部分
        this.title = title;
        this.message = message;
        // 盒子是公共的
        // 1. 创建 一定要加 this
        this.modalBox = document.createElement("div");
        // 2. 添加类名
        this.modalBox.className = "modal";
        // 3. 填充内容 更换数据
        this.modalBox.innerHTML = `
        <div class="header">${this.title} <i>x</i></div>
        <div class="body">${this.message}</div>
      `;
      }
      // 2. 打开方法 挂载 到 模态框的构造函数原型身上
      Modal.prototype.open = function () {
        if (!document.querySelector(".modal")) {
          // 把刚才创建的盒子 modalBox  渲染到 页面中  父元素.appendChild(子元素)
          document.body.appendChild(this.modalBox);
          // 获取 x  调用关闭方法
          this.modalBox.querySelector("i").addEventListener("click", () => {
            this.close();
          });
        }
      };
      // 3. 关闭方法
      Modal.prototype.close = function () {
        document.body.removeChild(this.modalBox);
      };

      // 4. 按钮点击
      document.querySelector("#delete").addEventListener("click", () => {
        const m = new Modal("温馨提示", "您没有权限删除");
        // 调用 打开方法
        m.open();
      });

      // 5. 按钮点击
      document.querySelector("#login").addEventListener("click", () => {
        const m = new Modal("友情提示", "您还么有注册账号");
        // 调用 打开方法
        m.open();
      });
    </script>
  </body>
</html>
